package fr.uniscol.siecle.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Nomenclatures extends FichierSIECLE implements Serializable {

	private List<MEF> mefs = null;
	
	private List<Matiere> matieres = null;
	
	private List<ModaliteElection> modalites = null;
	
	private List<OptionObligatoire> optionsObligatoires = null;
	
	private List<Programme> programmes = null;
	
	private List<Regime> regimes = null;
	
	private List<LienParente> liensParente = null;
	
	private List<Bourse> bourses = null;
	
	private List<Profession> professions = null;
	
	private List<SituationEmploi> situationsEmploi = null;
	
	private List<PCSSituationEmploi> pcsSituationEmploi = null;
	
	private List<Provenance> provenances = null;
	
	private List<MotifSortie> motifsSortie = null;
	
	private List<StatutEleve> statutsEleve = null;
	
	private List<Contrat> contrats = null;
	
	private List<TypeEtablissement> typesEtablissement = null;

	public List<MEF> getMefs() {
		if(mefs == null){
			mefs = new ArrayList<MEF>();
		}
		return mefs;
	}

	public void setMefs(List<MEF> mefs) {
		this.mefs = mefs;
	}

	public List<Matiere> getMatieres() {
		if(matieres == null){
			matieres = new ArrayList<Matiere>();
		}
		return matieres;
	}

	public void setMatieres(List<Matiere> matieres) {
		this.matieres = matieres;
	}

	public List<ModaliteElection> getModalites() {
		if(modalites == null){
			modalites = new ArrayList<ModaliteElection>();
		}
		return modalites;
	}

	public void setModalites(List<ModaliteElection> modalites) {
		this.modalites = modalites;
	}

	public List<OptionObligatoire> getOptionsObligatoires() {
		if(optionsObligatoires == null){
			optionsObligatoires = new ArrayList<OptionObligatoire>();
		}
		return optionsObligatoires;
	}

	public void setOptionsObligatoires(List<OptionObligatoire> optionsObligatoires) {
		this.optionsObligatoires = optionsObligatoires;
	}

	public List<Programme> getProgrammes() {
		if(programmes == null){
			programmes = new ArrayList<Programme>();
		}
		return programmes;
	}

	public void setProgrammes(List<Programme> programmes) {
		this.programmes = programmes;
	}

	public List<Regime> getRegimes() {
		if(regimes == null){
			regimes = new ArrayList<Regime>();
		}
		return regimes;
	}

	public void setRegimes(List<Regime> regimes) {
		this.regimes = regimes;
	}

	public List<LienParente> getLiensParente() {
		if(liensParente == null){
			liensParente = new ArrayList<LienParente>();
		}
		return liensParente;
	}

	public void setLiensParente(List<LienParente> liensParente) {
		this.liensParente = liensParente;
	}

	public List<Bourse> getBourses() {
		if(bourses == null){
			bourses = new ArrayList<Bourse>();
		}
		return bourses;
	}

	public void setBourses(List<Bourse> bourses) {
		this.bourses = bourses;
	}

	public List<Profession> getProfessions() {
		if(professions == null){
			professions = new ArrayList<Profession>();
		}
		return professions;
	}

	public void setProfessions(List<Profession> professions) {
		this.professions = professions;
	}

	public List<SituationEmploi> getSituationsEmploi() {
		if(situationsEmploi == null){
			situationsEmploi = new ArrayList<SituationEmploi>();
		}
		return situationsEmploi;
	}

	public void setSituationsEmploi(List<SituationEmploi> situationsEmploi) {
		this.situationsEmploi = situationsEmploi;
	}

	public List<PCSSituationEmploi> getPcsSituationEmploi() {
		if(pcsSituationEmploi == null){
			pcsSituationEmploi = new ArrayList<PCSSituationEmploi>();
		}
		return pcsSituationEmploi;
	}

	public void setPcsSituationEmploi(List<PCSSituationEmploi> pcsSituationEmploi) {
		this.pcsSituationEmploi = pcsSituationEmploi;
	}

	public List<Provenance> getProvenances() {
		if(provenances == null){
			provenances = new ArrayList<Provenance>();
		}
		return provenances;
	}

	public void setProvenances(List<Provenance> provenances) {
		this.provenances = provenances;
	}

	public List<MotifSortie> getMotifsSortie() {
		if(motifsSortie == null){
			motifsSortie = new ArrayList<MotifSortie>();
		}
		return motifsSortie;
	}

	public void setMotifsSortie(List<MotifSortie> motifsSortie) {
		this.motifsSortie = motifsSortie;
	}

	public List<StatutEleve> getStatutsEleve() {
		if(statutsEleve == null){
			statutsEleve = new ArrayList<StatutEleve>();
		}
		return statutsEleve;
	}

	public void setStatutsEleve(List<StatutEleve> statutsEleve) {
		this.statutsEleve = statutsEleve;
	}

	public List<Contrat> getContrats() {
		if(contrats == null){
			contrats = new ArrayList<Contrat>();
		}
		return contrats;
	}

	public void setContrats(List<Contrat> contrats) {
		this.contrats = contrats;
	}

	public List<TypeEtablissement> getTypesEtablissement() {
		if(typesEtablissement == null){
			typesEtablissement = new ArrayList<TypeEtablissement>();
		}
		return typesEtablissement;
	}

	public void setTypesEtablissement(List<TypeEtablissement> typesEtablissement) {
		this.typesEtablissement = typesEtablissement;
	}

	public MEF findMef(String codeMef) {
		
		for(MEF m : getMefs()){
			if(m.getCode().equalsIgnoreCase(codeMef)){
				return m;
			}
		}
		
		return null;
	}

	public Matiere findMatiere(String codeMatiere) {
		
		for(Matiere mt : getMatieres()){
			if(mt.getCode().equalsIgnoreCase(codeMatiere)){
				return mt;
			}
		}
		return null;
	}

	public ModaliteElection findModalite(String codeModalite) {
		for(ModaliteElection mod : getModalites()){
			if(mod.getCode().equalsIgnoreCase(codeModalite)){
				return mod;
			}
		}
		return null;
	}

	public Profession findProfession(String codeProfession) {
		for(Profession p : getProfessions()){
			if(p.getCode().equals(codeProfession)){
				return p;
			}
		}
		return null;
	}

	public SituationEmploi findSituation(String codeSituation) {
		for(SituationEmploi s : getSituationsEmploi()){
			if(s.getCode().equalsIgnoreCase(codeSituation)){
				return s;
			}
		}
		return null;
	}
}
